package com.ljx.QueueStack;

/**
 * @author 李加喜
 * @Package com.ljx.QueueStack
 * @date 2021-11-30 16:01
 */

import java.util.LinkedList;
import java.util.Queue;

/**
 *  用队列实现栈
 */
public class MyStack {

    Queue<Integer> q;
    //用于记录队尾
    int top_num=0;
    public MyStack() {
        q= new LinkedList<Integer>();
    }

    public void push(int x) {
        q.add(x);
        // 记录的是当前的队尾
        top_num=x;
    }
    //删除栈顶并返回
    public int pop() {
        int size=q.size();
        //留下队尾两个元素
        while (size>2){
            // 将栈底数据取出放到栈尾部
            q.offer(q.poll());
            size--;
        }
        //记录此时新的队尾元素
        top_num=q.peek();
        q.offer(q.poll());
        //这个时候对队尾的元素就已经到队首了
        return q.poll();
    }
    //返回栈顶
    public int top() {
        return top_num;
    }

    public boolean empty() {
        return q.isEmpty();
    }
}
